package com.erp.storage.ao.idl;

import java.util.BitSet;
import java.util.Map;
import java.util.Set;

import com.paipai.lang.uint16_t;
import com.paipai.lang.uint32_t;
import com.paipai.lang.uint64_t;
import com.paipai.lang.uint8_t;
import com.paipai.util.annotation.ApiProtocol;
import com.paipai.util.annotation.Field;
import com.paipai.util.annotation.HeadApiProtocol;
import com.paipai.util.annotation.Member;


public class StoragePo {
	@Member(cPlusNamespace=  "erp::storage::po",desc = "仓库po", isNeedUFlag = true)
	public
    class StockPo 
    {
		@Field(desc =   " 版本号   ", defaultValue=  "0" , optional = true)
        uint32_t  version;

        @Field(desc =   " 仓库SysNo " , optional = true)	
        uint64_t FStockSysNo;
        
        @Field(desc =   " 仓库ID " , optional = true)
        String FStockID;
        
        @Field(desc =   " 仓库全名" , optional = true)
        String FFullName;
        
        @Field(desc =   " 仓库简称" , optional = true)
        String FName;
        
        @Field(desc =   " 仓库属性  ",bitset=32 , optional = true)
        BitSet   FStockProperty;

        
        @Field(desc =   " 拼音码" , optional = true)
        String FPyCode;
        
        @Field(desc =   " 联系人SysNo" , optional = true)
        uint64_t FContactSysNos;
        
        @Field(desc =   " 仓库状态" , optional = true)
        uint32_t FStockStatus;
        
        @Field(desc =   " 创建人SysNo" , optional = true)
        uint64_t FCreatorSysNo;
        
        @Field(desc =   " 创建时间" , optional = true)
        uint32_t FRowCreatDate;
        
        @Field(desc =   " 修改人SysNo" , optional = true)
        uint64_t FModifierSysNo;
        
        @Field(desc =   " 修改时间" , optional = true)
        uint32_t FRowModifyDate;
    }
	
	@Member(cPlusNamespace=  "erp::storage::po",desc = "过滤po", isNeedUFlag = true)
	public
    class StockFilterPo 
    {
		@Field(desc =   " 版本号   ", defaultValue=  "0" , optional = true)
        uint32_t  version;

        @Field(desc =   " 页码，从0开始 " , optional = true)
        uint32_t page;
        
        @Field(desc =   " 页面大小 " , optional = true)
        uint32_t pageSize;
        
        @Field(desc =   " 排序方式 " , optional = true)
        uint16_t orderType;
        
        @Field(desc = "Id列表，若填写则其他过滤条件无效" , optional = true)
		Set<uint32_t> idList;
		
        @Field(desc =   " 仓库SysNo " , optional = true)	
        uint64_t FStockSysNo;
        
        @Field(desc =   " 仓库ID " , optional = true)
        String FStockID;
        
        @Field(desc =   " 拼音码" , optional = true)
        String FPyCode;
        
        @Field(desc =   " 仓库全名" , optional = true)
        String FFullName;
        
        @Field(desc =   " 仓库简称" , optional = true)
        String FName;
        

        @Field(desc =   " 仓库状态" , optional = true)
        uint32_t FStockStatus;
        
        @Field(desc =   " 仓库属性" , optional = true)
        uint32_t FStockProperty;
        
        
        
        @Field(desc =   " 扩展" , optional = true)
        Map<String,String> extern;
    }
	
	@Member(cPlusNamespace=  "erp::storage::po",desc = "仓库与分支机构关系po", isNeedUFlag = true)
	public
    class StockBranch_RelPo 
    {
		@Field(desc =   " 版本号   ", defaultValue=  "0" , optional = true)
        uint32_t  version;

        @Field(desc =   " 仓库SysNo " , optional = true)	
        uint64_t FStockSysNo;
        
        @Field(desc =   " 分支机构SysNo " , optional = true)	
        uint64_t FBranchSysNo;
         
        @Field(desc =   " 联系人SysNo" , optional = true)
        uint64_t FContactSysNos;
        
        @Field(desc =   " 创建人SysNo" , optional = true)
        uint64_t FCreatorSysNo;
        
        @Field(desc =   " 创建时间" , optional = true)
        uint32_t FRowCreatDate;
        
        @Field(desc =   " 修改人SysNo" , optional = true)
        uint64_t FModifierSysNo;
        
        @Field(desc =   " 修改时间" , optional = true)
        uint32_t FRowModifyDate;
    }
	
	
	
	
	@Member(cPlusNamespace=  "erp::storage::po",desc = "报溢单po", isNeedUFlag = true)
	public
    class OverFlowBillPo 
    {
		@Field(desc =   " 版本号   ", defaultValue=  "0" , optional = true)
        uint32_t  version;
		@Field(desc = "报溢SysNo", optional = true)
		uint64_t overflowbillSysNo;
		@Field(desc = "仓储业务单据Sysno", optional = true)
		uint64_t stockBillMasterSysno;
		@Field(desc = "商品SysNo", optional = true)
		uint64_t productSysNo;
		@Field(desc = "库位SysNo", optional = true)
		uint64_t storageSysNo;
		@Field(desc = "分支机构SysNo", optional = true)
		uint64_t branchSysNo;
		@Field(desc = "来源单据号SysNo", optional = true)
		uint64_t fromBillSysNo;
		@Field(desc = "数量", optional = true)
		uint32_t qty;
		@Field(desc = "输入成本价", optional = true)
		uint64_t inputCostPrice;
		@Field(desc = "输入成本总金额", optional = true)
		uint64_t inputCostAmount;
		@Field(desc = "备注", optional = true)
		String comment;
		@Field(desc = "商品成本价", optional = true)
		uint64_t costPrice;
		@Field(desc = "商品成本总金额", optional = true)
		uint64_t costAmount;
		@Field(desc = "过账时间", optional = true)
		uint32_t checkTime;
		@Field(desc = "创建时间", optional = true)
		uint32_t rowCreatDate;
		@Field(desc = "创建人SysNo", optional = true)
		uint64_t creatorSysNo;
		@Field(desc = "修改人SysNo", optional = true)
		uint64_t modifyUserSysNo;
		@Field(desc = "修改时间", optional = true)
		uint32_t modifyTime;
		@Field(desc = "报溢状态,只读", bitset = 32, optional = true)
		BitSet overProperty;
		@Field(desc = "报溢状态,设置", bitset = 32, optional = true)
		BitSet overPropertyInclude;
		@Field(desc = "报溢状态,取消", bitset = 32, optional = true)
		BitSet overPropertyExclude;
		@Field(desc = "报溢属性", optional = true)
		uint32_t overStatus;

    }
	
	
	@Member(cPlusNamespace=  "erp::storage::po",desc = "报溢单/报损单filter", isNeedUFlag = true)
	public
    class OverFlowBillOrLoseBillFilterPo 
    {
		@Field(desc =   " 版本号   ", defaultValue=  "0" , optional = true)
        uint32_t  version;

        @Field(desc =   " 页码，从0开始 " , optional = true)
        uint32_t page;
        
        @Field(desc =   " 页面大小 " , optional = true)
        uint32_t pageSize;
        
        @Field(desc =   " 排序方式 " , optional = true)
        uint16_t orderType;
        
        @Field(desc = "Id列表，若填写则其他过滤条件无效" , optional = true)
		Set<uint32_t> idList;
		
		@Field(desc = "商品SysNo", optional = true)
		uint64_t productSysNo;
		
		@Field(desc = "分支机构SysNo", optional = true)
		uint64_t branchSysNo;
		
		@Field(desc = "来源单据号SysNo", optional = true)
		uint64_t fromBillSysNo;
		
		@Field(desc = "数量", optional = true)
		uint32_t qty;
					
		@Field(desc = "过账时间", optional = true)
		uint32_t checkTime;
		
		@Field(desc = "创建时间", optional = true)
		uint32_t rowCreatDate;
		
		@Field(desc = "创建人SysNo", optional = true)
		uint64_t creatorSysNo;
		
		@Field(desc = "修改人SysNo", optional = true)
		uint64_t modifyUserSysNo;
		
		@Field(desc = "修改时间", optional = true)
		uint32_t modifyTime;
		
        @Field(desc =   " 状态" , optional = true)
        uint32_t status;
        
        @Field(desc =   " 属性" , optional = true)
        Set<uint64_t> property;
		
        @Field(desc =   " 扩展" , optional = true)
        Map<String,String> extern;
    }
	
	
	@Member(cPlusNamespace=  "erp::storage::po",desc = "报损单po", isNeedUFlag = true)
	public
    class LoseBillPo 
    {
		@Field(desc =   " 版本号   ", defaultValue=  "0" , optional = true)
        uint32_t  version;
		@Field(desc = "报损SysNo", optional = true)
		uint64_t losebillSysNo;
		@Field(desc = "仓储业务单据Sysno", optional = true)
		uint64_t stockBillMasterSysno;
		@Field(desc = "商品SysNo", optional = true)
		uint64_t productSysNo;
		@Field(desc = "库位SysNo", optional = true)
		uint64_t storageSysNo;
		@Field(desc = "分支机构SysNo", optional = true)
		uint64_t branchSysNo;
		@Field(desc = "来源单据号", optional = true)
		uint64_t fromBillSysNo;
		@Field(desc = "数量", optional = true)
		uint32_t qty;
		@Field(desc = "输入成本价", optional = true)
		uint64_t inputCostPrice;
		@Field(desc = "输入成本总金额", optional = true)
		uint64_t inputCostAmount;
		@Field(desc = "备注", optional = true)
		String comment;
		@Field(desc = "成本价", optional = true)
		uint64_t costPrice;
		@Field(desc = "商品成本总金额", optional = true)
		uint64_t costAmount;
		@Field(desc = "过账时间", optional = true)
		uint32_t checkTime;
		@Field(desc = "创建时间", optional = true)
		uint32_t rowCreatDate;
		@Field(desc = "创建人SysNo", optional = true)
		uint64_t creatorSysNo;
		@Field(desc = "修改人SysNo", optional = true)
		uint64_t modifyUserSysNo;
		@Field(desc = "修改时间", optional = true)
		uint32_t modifyTime;
		@Field(desc = "报损属性,只读", bitset = 32, optional = true)
		BitSet lostProperty;
		@Field(desc = "报损属性,设置", bitset = 32, optional = true)
		BitSet lostPropertyInclude;
		@Field(desc = "报损属性,取消", bitset = 32, optional = true)
		BitSet lostPropertyExclude;
		@Field(desc = "报损状态", optional = true)
		uint32_t lostStatus;
    }
	
	@Member(cPlusNamespace=  "erp::storage::po",desc = "拆装单po", isNeedUFlag = true)
	public
    class DisassembleBillPo 
    {
		@Field(desc =   " 版本号   ", defaultValue=  "0" , optional = true)
        uint32_t  version;
		@Field(desc = "拆装单Sysno", optional = true)
		uint64_t disassemblebillSysNo;
		@Field(desc = "仓储业务单据Sysno", optional = true)
		uint64_t stockBillMasterSysno;
		@Field(desc = "仓库SysNo", optional = true)
		uint64_t stockSysNo;
		@Field(desc = "商品SysNo", optional = true)
		uint64_t productSysNo;
		@Field(desc = "库位SysNo", optional = true)
		uint64_t storageSysNo;
		@Field(desc = "分支机构SysNo", optional = true)
		uint64_t branchSysNo;
		@Field(desc = "数量", optional = true)
		uint32_t qty;
		@Field(desc = "拆装类型", optional = true)
		uint16_t disassemblebillType;
		@Field(desc = "备注", optional = true)
		String comment;
		@Field(desc = "输入成本价", optional = true)
		uint64_t inputCostPrice;
		@Field(desc = "输入成本总金额", optional = true)
		uint64_t inputCostAmount;
		@Field(desc = "商品成本价", optional = true)
		uint64_t costPrice;
		@Field(desc = "商品成本总金额", optional = true)
		uint64_t costAmount;
		@Field(desc = "过账时间", optional = true)
		uint32_t checkTime;
		@Field(desc = "创建人SysNo", optional = true)
		uint64_t creatorSysNo;
		@Field(desc = "创建时间", optional = true)
		uint32_t rowCreatDate;
		@Field(desc = "修改人SysNo", optional = true)
		uint64_t modifyUserSysNo;
		@Field(desc = "修改时间", optional = true)
		uint32_t modifyTime;
		@Field(desc = "拆装单状态", optional = true)
		uint32_t status;
		@Field(desc = "拆装单属性,只读", bitset = 32, optional = true)
		BitSet property;
		@Field(desc = "拆装单属性,设置", bitset = 32, optional = true)
		BitSet propertyInclude;
		@Field(desc = "拆装单属性,取消", bitset = 32, optional = true)
		BitSet propertyExclude;
    }
	
	@Member(cPlusNamespace=  "erp::storage::po",desc = "拆装单filter", isNeedUFlag = true)
	public
    class DisassembleBillFilterPo 
    {
		@Field(desc =   " 版本号   ", defaultValue=  "0" , optional = true)
        uint32_t  version;

        @Field(desc =   " 页码，从0开始 " , optional = true)
        uint32_t page;
        
        @Field(desc =   " 页面大小 " , optional = true)
        uint32_t pageSize;
        
        @Field(desc =   " 排序方式 " , optional = true)
        uint16_t orderType;
        
        @Field(desc = "Id列表，若填写则其他过滤条件无效" , optional = true)
		Set<uint32_t> idList;
		
		@Field(desc = "仓储业务单据Sysno", optional = true)
		uint64_t stockBillMasterSysno;
		
		@Field(desc = "仓库SysNo", optional = true)
		uint64_t stockSysNo;
		
		@Field(desc = "商品SysNo", optional = true)
		uint64_t productSysNo;

		@Field(desc = "分支机构SysNo", optional = true)
		uint64_t branchSysNo;
		
		@Field(desc = "数量", optional = true)
		uint32_t qty;
		
		@Field(desc = "拆装类型", optional = true)
		uint16_t disassemblebillType;

		@Field(desc = "过账时间", optional = true)
		uint32_t checkTime;
		
		@Field(desc = "创建时间", optional = true)
		uint32_t rowCreatDate;
		
		@Field(desc = "创建人SysNo", optional = true)
		uint64_t creatorSysNo;
		
		@Field(desc = "修改人SysNo", optional = true)
		uint64_t modifyUserSysNo;
		
		@Field(desc = "修改时间", optional = true)
		uint32_t modifyTime;
		
        @Field(desc =   " 状态" , optional = true)
        uint32_t status;
        
        @Field(desc =   " 属性" , optional = true)
        Set<uint64_t> property;
		
        @Field(desc =   " 扩展" , optional = true)
        Map<String,String> extern;
    }
	
	@Member(cPlusNamespace=  "erp::storage::po",desc = "盘点单主表po", isNeedUFlag = true)
	public
    class StockCheckMasterPo 
    {
		@Field(desc =   " 版本号   ", defaultValue=  "0" , optional = true)
        uint32_t  version;
		@Field(desc = "库存盘点SysNo", optional = true)
		uint64_t stockCheckMasterSysNo;
		@Field(desc = "业务单据号", optional = true)
		String billCode;
		@Field(desc = "仓库SysNo", optional = true)
		uint64_t stockSysNo;
		@Field(desc = "职员SysNo", optional = true)
		uint64_t staffSysNo;
		@Field(desc = "往来单位SysNo", optional = true)
		uint64_t businessUnitsSysNo;
		@Field(desc = "部门SysNo", optional = true)
		uint64_t departmentSysNo;
		@Field(desc = "盘点状态", optional = true)
		uint16_t checkStatus;
		@Field(desc = "单据时间", optional = true)
		uint32_t billDate;
		@Field(desc = "备注", optional = true)
		String comment;
		@Field(desc = "盘点处理时间", optional = true)
		uint32_t auditTime;
		@Field(desc = "盘点单明细项", optional = true)
		vector<StockCheckItemPo> vecStockCheckItemList;
		@Field(desc = "创建时间", optional = true)
		uint32_t rowCreatDate;
		@Field(desc = "创建人SysNo", optional = true)
		uint64_t creatorSysNo;
		@Field(desc = "修改人SysNo", optional = true)
		uint64_t modifyUserSysNo;
		@Field(desc = "修改时间", optional = true)
		uint32_t modifyTime;
		@Field(desc = "盘点单属性,只读", bitset = 32, optional = true)
		BitSet stockCheckMasteProperty;
		@Field(desc = "盘点单属性,设置", bitset = 32, optional = true)
		BitSet stockCheckMastePropertyInclude;
		@Field(desc = "盘点单属性,取消", bitset = 32, optional = true)
		BitSet stockCheckMastePropertyExclude;
    }
	
	@Member(cPlusNamespace=  "erp::storage::po",desc = "拆装单filter", isNeedUFlag = true)
	public
    class DisassembleBillFilterPo 
    {
		@Field(desc =   " 版本号   ", defaultValue=  "0" , optional = true)
        uint32_t  version;

        @Field(desc =   " 页码，从0开始 " , optional = true)
        uint32_t page;
        
        @Field(desc =   " 页面大小 " , optional = true)
        uint32_t pageSize;
        
        @Field(desc =   " 排序方式 " , optional = true)
        uint16_t orderType;
        
        @Field(desc = "Id列表，若填写则其他过滤条件无效" , optional = true)
		Set<uint32_t> idList;
		
		@Field(desc = "业务单据号", optional = true)
		String billCode;
		
		@Field(desc = "仓库SysNo", optional = true)
		uint64_t stockSysNo;
		
		@Field(desc = "职员SysNo", optional = true)
		uint64_t staffSysNo;
		
		@Field(desc = "往来单位SysNo", optional = true)
		uint64_t businessUnitsSysNo;
		
		@Field(desc = "部门SysNo", optional = true)
		uint64_t departmentSysNo;
		
		@Field(desc = "盘点状态", optional = true)
		uint16_t checkStatus;
		
		@Field(desc = "单据时间", optional = true)
		uint32_t billDate;

		@Field(desc = "盘点处理时间", optional = true)
		uint32_t auditTime;
		
		@Field(desc = "创建人SysNo", optional = true)
		uint64_t creatorSysNo;
		
		@Field(desc = "修改人SysNo", optional = true)
		uint64_t modifyUserSysNo;
		
		@Field(desc = "修改时间", optional = true)
		uint32_t modifyTime;	
        
        @Field(desc =   " 属性" , optional = true)
        Set<uint64_t> stockCheckMasteProperty;
		
        @Field(desc =   " 扩展" , optional = true)
        Map<String,String> extern;
    }
	
	
	@Member(cPlusNamespace=  "erp::storage::po",desc = "库存盘点明细表po", isNeedUFlag = true)
	public
    class StockCheckItemPo 
    {
		@Field(desc =   " 版本号   ", defaultValue=  "0" , optional = true)
        uint32_t  version;
		@Field(desc = "库存盘点明细SysNo", optional = true)
		uint64_t stockCheckItemSysNo;
		@Field(desc = "商品SysNo", optional = true)
		uint64_t productSysNo;
		@Field(desc = "盘点单SysNo", optional = true)
		uint64_t stockCheckMasterSysNo;
		@Field(desc = "库位SysNo", optional = true)
		uint64_t storageSysNo;
		@Field(desc = "盘点数量", optional = true)
		uint32_t checkQty;
		@Field(desc = "商品成本价", optional = true)
		uint64_t costPrice;
		@Field(desc = "商品成本总价", optional = true)
		uint64_t costAmount;
		@Field(desc = "库存数量", optional = true)
		uint32_t stockQty;
		@Field(desc = "仓位空间", optional = true)
		String cargoSpace;
		@Field(desc = "创建时间", optional = true)
		uint32_t rowCreatDate;
		@Field(desc = "创建人SysNo", optional = true)
		uint64_t creatorSysNo;
		@Field(desc = "修改人SysNo", optional = true)
		uint64_t modifyUserSysNo;
		@Field(desc = "修改时间", optional = true)
		uint32_t modifyTime;
		@Field(desc = "盘点明细状态", optional = true)
		uint32_t stockCheckItemStatus;
		@Field(desc = "盘点明细属性,只读", bitset = 32, optional = true)
		BitSet stockCheckItemProperty;
		@Field(desc = "盘点明细属性,设置", bitset = 32, optional = true)
		BitSet stockCheckItemPropertyInclude;
		@Field(desc = "盘点明细属性,取消", bitset = 32, optional = true)
		BitSet stockCheckItemPropertyExclude;

    }
}